{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "094032e3-4fdb-4ecd-a855-3a810817ed96",
   "metadata": {
    "tags": []
   },
   "source": [
    "## **模式识别综述1**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e551c668-6f8d-4e8f-87f2-2633a3fc77dd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: tabulate in /opt/conda/lib/python3.9/site-packages (0.8.10)\n",
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "pip install tabulate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "493e7337-bef4-4c73-88de-090eb0ca9e1f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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5r777qN+/fqussJP1qelpblGqB07doyjR4+6zlheeOEFLl68yF/+8pci8Rw5csSerDfGVBu+uCczHFjq/L4UGOGDfdwwAwY4HnYEx9+ePa8+WX89nt6AXPjJ+u3bt7teqT969GjeeustmjdvTkpKCi+//DJffvkl3bt3JyIigoULF7ra2Llzpz1Zf4MUHq4+aNAgmjVrxn333edW55FHHqFbt26Eh4czevRoMjMzAcjMzGTo0KF069aNsLAwt6HnngwbNsztfx6WLFlCq1atXEPcC34DaWlpDBo0yMtHaozviKqWf2OR48B3gAJvq+o7InJBVZsVqvOdqvp52HYaMA0gICCgx8qVK8sdh69dvAgZGdC0KZw9e5TVq1cza9asIjNEluStt96if//+dOjQoVxxHD3q2Pdvf/vbcm3vS5mZmWXuj6pu7dq15OfnM3r0aBITE7l06RIffvghr7zyiqvODz/8QKNGjQB444038PPz46GHHiImJobLly/zy1/+kgsXLjBhwgTWrFnj9sLSAtu3b2fbtm0cO3bMlYw++ugjvvrqK371q18Vqf/qq68yZMgQunbt6qMj966a+NuoCG/2R1RUVGKhq0hVk6qW+wO0dv71B/YBPwMuXFPnu5La6dGjh1YnixYt0n//+983fL+bNm3S48eP3/D9lsbWrVsrOwSv69Wrl1t/b926VaOjoz3WvXLlij722GP6xz/+UVVVH330UZ0+fbpeuXJFjx07ph06dND8/Pwi233//fd6991368GDBzUsLMxVvnjxYp0xY4bHfa1bt06nT59egSO7sWrib6MivNkfwF6twL/hN+JToctlqprq/HsWWAv8FPhWRAIBnH/PVmQfVVFlPll/7cRkxjeKmwjOk8mTJ3Prrbdy+PBhnnjiCQBGjhzJoUOHaN26NV27duWvf/0rdeoU/c/td7/7Hb/+9a89zl66Zs0a12W4U6dOucptGLupTsqdZESkkYg0KfgODAAOAHHARGe1icD6igZpzI3maSK44ixevJjU1FRCQ0NZtWoVAHv27CEiIoLU1FSSkpKYOXMmGRkZbtslJSWRnJzMyJEji7Q5dOhQTpw4wf79++nXrx8TJ050rfP397cJ4ky1UZEzmQBgh4jsAxKA/1PVj4A/Av1F5CjQ37lsTLVwvYngrqdu3bqMGTOGNWvWALBx40ZGjRqFiNCxY0fat29f5PmmTz/9lMTERIKDg7nnnns4cuQIffr0AaBFixauIe5Tp04lMTHRtZ0NYzfVSbmTjKoeU9Vuzk+Yqr7sLE9X1b6qGuL8e9574RrjOyVNBHctVSU5Odn1/cMPP+SOO+4AICAgwDVt9bfffstXX33lGqLet29fTp8+zfTp00lNTeXEiRPs2LGDTp06ER8fD1ydYM4RVxyhoaGuZRvGbqoTe+LfGKdrJ4K77TbHcPV+/fpx7733cvjwYTIzMwkKCmLRokX079+fiRMnkpGRgarSrVs3/va3vwEwfvx43nnnHbp27Yqq8uqrr9KyZUuuXLlCcnIyzZs3v24sr7/+OnFxcdx00000b96cJUuWuNZt3brVNZGcMVWdJRljnK43EVxxN9p37tzpsbxly5Zs2rSpSPmXX37J/fffX+RyV3BwMAcOHHAtv/LKK25DpQuLi4tj/Xq71WmqB0syxjh5cyK44nTp0oV58+aVe/u0tDSefvpp/PyKPHpmTJVkScaYQoYNuzoJHFDlZvxs1apVmaaOMKay2av+jTHG+IwlGWOMMT5jScYYY4zPWJIxxhjjM5ZkjDHG+IwlGWOMqSQFcxYlJibSq1cvwsLCCA8Pd70DD2DSpEm0b9/eNbdQUlISQMFriu4QkUsi8kxx+xCRj0Rkn4gcFJG3RKSus7yeiKwSkWQR2S0iwc7yViLykbeO0YYwG2NMJYmJiWHUqFE0adKEZcuWERISQmpqKj169GDgwIGul7TOnTuX0aNHu23rfGvESRxvwL+eX6hqhogI8AHwALASeATHVCwdReRB4FVgjKqmicgZEblbVT0/bVwGdiZjjDGVJDY2luHDh9OpUydCQkIAaN26Nf7+/qSlpV13W39/f4As4PL16qlqweu/bwJuxjHJJLjPYvwB0NeZiADWAQ+X6WCKYUnGGGMqQXFzFiUkJJCbm+s2g+7s2bMJDw/nqaee4tKlS2Xel4j8C8fcXt/jSCgAbYBTAKqaB1wEWjjX7QXuLfOOPLAkY4wxlcDTnEVnzpxh/PjxLF682DXJ3SuvvMLhw4fZs2cP58+f59VXXy3zvlR1IBAI1AN+7iwWT1Wdf88Crcu8Iw8syRhjzA108aLnOYsyMjKIjo5mzpw59OzZ01UeGBiIiFCvXj0mT55MQkJCufarqjk4JpUc7ixKAdoCiMhNwC1AwdQs9YHscu3oGpZkjDHmBomLg2PHis5ZlJuby8iRI5kwYQIPPPCA2zYFcwupKuvWrSvVXEIisllE2ohIYxEJdJbdBAwBCmbPKzyL8Whgi6oWnMl0wjHTcYXZ6DJjjLlBNm2C9u0d3wvPWfTNN9+wfft20tPTXXMHLVmyhIiICB5++GHS0tJQVSIiInjrrbcA+OabbwDCcSSEKyLyJNAZyAQ64jgraQrEiUg9oC6wBXjLGc4iYLmIJDvrPlgo1Cjg/7xxzJZkjDHmBhkwAL7+2vG98JxFy5cvZ9y4cR632bJli8fyW2+9FWC/qkYWLheRLsAaVc3GccnrJ562d14+e8DTOmAYVy+rVUi5L5eJSFsR2Soih5wP+fzKWf6iiJwWkSTnZ4g3AjXGmOpu2DC4/XaYMcMxd9GTT95JVJRjziJvUdUDqvp0ebcXkVbAPFX9zhvxVORMJg/4tap+JiJNgEQR+di5br6q/qni4RljTM1yyy2wYMHV5ao2Z5GqpuF4TsYryp1kVPUMcMb5/XsROYRj3LUxxhgDgFwdTFCBRhzvvNkOdAGeBiYBGTge6Pm1p9MuEZkGTAMICAjosXLlygrHcSNlZmbSuHHjyg6jyrD+cGf9cZX1hTtv9kdUVFTitfdkqpoKJxkRaQxsA15W1X+ISABwDsdDPS8Bgap63fPByMhI3bt3b4XiuNHi4+Pp06dPZYdRZVh/uLP+uMr6wp03+0NEqnySqdBzMiLyI2ANEKuq/wBQ1W9VNV9VrwDvAj+teJjGGGOqo4qMLhMc46wPqeq8QuWBhaqNxEsP9BhjjKl+KjK67G5gPPCFiCQ5y34LjBWRCByXy04Av6zAPowxxlRjXrnxX+EgRNKA/1Z2HGXUEse9J+Ng/eHO+uMq6wt33uyP21S1lZfa8okqkWSqIxHZW9VvuN1I1h/urD+usr5wV9v6w16QaYwxxmcsyRhjjPEZSzLl905lB1DFWH+4s/64yvrCXa3qD7snY4wxxmfsTMYYY4zPWJIxxhjjM5ZkSklETojIF845cvY6y5qLyMcictT516+y4/QVEYkRkbMicqBQWbHHLyK/EZFkEflKRAZWTtS+UUxfFDuPUg3vi+Lmlaqtv40yz7NVk/sDcMwbbZ+SPzjeXtDymrLXgOed358HXq3sOH14/D8DugMHSjp+HFPA7gPqAe2Br4G6lX0MPu6LF4FnPNSt6X0RCHR3fm8CHHEec239bRTXH7Xy96GqdiZTQcOBpc7vS4ERlReKb6nqdhzzgBdW3PEPB1aq6iVVPQ4kU4NelFpMXxSnpvfFGVX9zPn9e6BgXqna+tsorj+KU6P7A+xyWVkosElEEp1z4QAEqGPyNpx//SstuspR3PG3AU4VqpdC7ZjQbqaI7HdeTiu4PFRr+sI5r9SdwG7st3Ftf0At/X1Ykim9u1W1OzAYmCEiP6vsgKow8VBW08fK/w3oAETgmDH2z87yWtEXznml1gBPqmrG9ap6KKsN/VFrfx+WZEpJVVOdf88Ca3Gc0n5bMLWB8+/ZyouwUhR3/ClA20L1goDUGxzbDaXFz6NU4/vC07xS1OLfRhnn2arx/WFJphREpJGINCn4DgzAMU9OHDDRWW0isL5yIqw0xR1/HPCgiNQTkfZACJBQCfHdMNeZR6lG90Vx80pRS38b5Zhnq0b3B1RsPpnaJABY6/j9cBPwnqp+JCJ7gPdF5BHgJPBAJcboUyKyAugDtBSRFOAPwB/xcPyqelBE3ge+BPKAGaqaXymB+0AxfdHH0zxKNb0vKH5eqVr526CM82zVgv6w18oYY4zxHbtcZowxxmcsyRhjjPEZSzLGGGN8xpKMMcYYn7EkY4wxxmcsyRhjjPEZSzLGGGN85v8Diu4hQ6Juq54AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#引入合适的包\n",
    "from numpy.random import randint    \n",
    "from tabulate import tabulate       \n",
    "import matplotlib.pyplot as plt     \n",
    "\n",
    "# 生成数组\n",
    "# size=(10,2) : 生成一个10行4列的二维数组\n",
    "# 0,255      : 每一个数值都是介于[0,255)的随机数, 注意255取不到\n",
    "X=randint(0,255,size=(10,2)) \n",
    "N=randint(0,255,size=(1,2)) \n",
    "\n",
    "# 使用tabulate的网格模式打印数组内容\n",
    "# print(tabulate(X,tablefmt='grid'))\n",
    "\n",
    "#绘制\n",
    "fg, ax = plt.subplots()\n",
    "ax.grid()#绘制网格\n",
    "\n",
    "ax.scatter(X[:, 0], X[:, 1], c='blue', s=10)#绘制散点\n",
    "ax.scatter(N[:, 0], N[:, 1], c='red', s=20)\n",
    "\n",
    "#绘制标签\n",
    "for x, y in X:  # 循环所有点\n",
    "    s = f'({x},{y})'\n",
    "    ax.text(x, y, s)  # 在所有点的位置绘制标签\n",
    "for x, y in N:  # 循环所有点\n",
    "    s = f'({x},{y})'\n",
    "    ax.text(x, y, s)\n",
    "\n",
    "# 通过plt调节图像的细节\n",
    "# labeltop=True     :  在图像上端显示x轴\n",
    "# labelbottom=False :  把图像下端显示的数字去除\n",
    "# bottom=False      :  把图像下端显示的数轴线段去除\n",
    "# rotation=0        :  把x和y轴的数字都调节为竖向显示\n",
    "plt.tick_params(labeltop=False,labelbottom=True, bottom=True,rotation=0)\n",
    "plt.show() # 显示图像"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8b524c59-a939-4151-abcd-c806ad483217",
   "metadata": {},
   "source": [
    "啊发现我想的好复杂"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2d7a6f96-c138-4b1f-9eee-def742369d5c",
   "metadata": {},
   "source": [
    "### **参考代码**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a3bce628-7c1b-4387-b075-958390fd6098",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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36pLly4aNmxYlc+zcOFCjRs3zmsokpWVpdjY2EZ+YwCAM4WAAgAA4Dy2d++pLeMkrVJ29glPS1RUlFwul/bv369hw4bJ5XIpOztbkrRp0yZdeeWVCgoKUnJystLT09W7d2/PvnPnzlVgYKA6deqk//iP/9CYMWN07733Siq7IWdERIQ6dy57Iv2aNWvkcrkUFxenvXv3yuVyaejQoZ65nn32WbVv315du3bVgQMHtHTp0ior379/v/7f//t/GjduXLXP+dlnn6lt27aeszsAAE1PnR8zCgAAgObnoouk8qyhXHtJ49Su3YuSJkqS5wwHb+666y7dddddNfYHBwdryZIlXvuysrI0ZswYtWzZUpIUHR3tOTPDm8WLF9fYJ0mdO3dWSUmJ176ZM2cqJYUrkAGgKSOgAAAAOI+lpFS9B4UkBQTM0AsvnPljT5kyRZmZmWf+QJLeeuuts3IcAEDDcYkHAOCclpycrNmzZzu9DJ+64447tHr1aqeXgfNEYqKUmip16yYZU/YzNVV1ukEmAAC+REABADhnHTp0SGlpaZowYYKkspv3jRw5UpGRkTLGeP0vs59//rluuOEGBQYGKiIiQnPmzJEk7d27V4GBgVVexhj96U9/8nrsjz76SDExMQoJCVFkZGS1/vXr12vgwIEKCgpSnz599PHHH3v6Vq5cqUGDBik0NFQdO3bU/fffr/z8nx7r+MQTT2hy5TsUAmdYYqLkdkulpWU/CScAAE4goAAAnLMWLFiguLg4uVwuT9ugQYO0aNEidezYsdr477//XsOHD9eECRN0+PBh7dq1y3MDvosuukgFBQWe17Zt2+Tn56c777zT67Hbtm2re++9V7NmzarWd+TIEY0YMUK/+93vlJubq0mTJik+Pl5Hjx6VJB07dkxTpkzRt99+qx07dmjfvn363e9+59l/4MCBysvL08aNGxv1/QAAAJxLCCgAAOesjIwMDR482LPdqlUrTZw4UYMGDZK/v3+18c8995yGDRumxMREtW7dWkFBQerVq5fXudPS0nTDDTd4PTtCKgsRxo4dqx49elTrW79+vSIiIjRq1Cj5+/vrl7/8pcLDw/X2229LksaMGaPhw4crICBA7dq10/33369169ZVmSM6OlorV66s61cBAABwziOgAACcs7Zt26aoqKg6j9+wYYPCwsJ07bXXqkOHDoqPj9fe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\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 生成11个点,10个随机点，1个待测随机点\n",
    "X = np.random.randint(0,255,(11,2)) \n",
    "\n",
    "fg,ax=plt.subplots(figsize=(15,7))\n",
    "ax.grid()\n",
    "ax.scatter(X[0:10,0],X[0:10,1],c='blue') #前十个点是蓝色的\n",
    "ax.scatter(X[10,0],X[10,1],c='red',s=100) #待测点是一个大一点的红色\n",
    "\n",
    "# 给所有的点加坐标标签\n",
    "for x,y in X:\n",
    "    s=f\"({x},{y})\"\n",
    "    ax.text(x,y,s,size=12)\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e8e8cc2-19f8-4dc3-b13e-4e057dce6d10",
   "metadata": {},
   "source": [
    "#### 代码升级1.0：利用列表生成器简化程序，返回标签列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a644edb6-1516-43c3-a1bd-338e2adb03cd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[Text(72, 114, '(72,114)'), Text(208, 10, '(208,10)'), Text(75, 161, '(75,161)'), Text(240, 166, '(240,166)'), Text(118, 41, '(118,41)'), Text(197, 81, '(197,81)'), Text(166, 221, '(166,221)'), Text(149, 216, '(149,216)'), Text(154, 137, '(154,137)'), Text(246, 76, '(246,76)'), Text(39, 141, '(39,141)')]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1080x504 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "# 生成11个点,10个随机点，1个待测随机点\n",
    "X = np.random.randint(0,255,(11,2)) \n",
    "\n",
    "fg,ax=plt.subplots(figsize=(15,7))\n",
    "ax.grid()\n",
    "ax.scatter(X[0:10,0],X[0:10,1],c='blue') #前十个点是蓝色的\n",
    "ax.scatter(X[10,0],X[10,1],c='red',s=100) #待测点是一个大一点的红色\n",
    "\n",
    "####################################################################\n",
    "# 这句话可以写成列表生成器的形式，这个列表还可以有其他的作用\n",
    "text_list=[ax.text(x,y,\"({0},{1})\".format(x,y),size=12) for x,y in X]\n",
    "print(text_list)\n",
    "####################################################################\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "35a81969-ff1e-4f4d-8b10-39c1624174f8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "c3ade233-0184-452a-b24b-40f7f060bb79",
   "metadata": {},
   "source": [
    "#### 代码升级2.0：利用adjust_text自动调节所有的标签，使其在最佳位置呈现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "c3a58b40-5f33-4487-86a8-98956bc41037",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "UsageError: unrecognized arguments: # 注意这句话使用在你单机的Jupyter NB环境，或者AI Studio类似的环境中\n"
     ]
    }
   ],
   "source": [
    "#先安装adjustText\n",
    "#此代码因为要引入第三方包，所以不能在聚宽中运行。可以尝试任何的IDE或者AI Studio等在线环境\n",
    "\n",
    "%matplotlib inline # 注意这句话使用在你单机的Jupyter NB环境，或者AI Studio类似的环境中\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "###################################################################\n",
    "# 引入 adjustText 包的 adjust_text 函数用来美化标签的显示\n",
    "from adjustText import adjust_text\n",
    "###################################################################\n",
    "\n",
    "# 生成11个点,10个随机点，1个待测随机点\n",
    "X = np.random.randint(0, 255, (11, 2))\n",
    "\n",
    "fg, ax = plt.subplots(figsize=(15, 7))\n",
    "ax.grid()\n",
    "ax.scatter(X[0:10, 0], X[0:10, 1], c='blue')  # 前十个点是蓝色的\n",
    "ax.scatter(X[10, 0], X[10, 1], c='red', s=100)  # 待测点是一个大一点的红色\n",
    "\n",
    "####################################################################\n",
    "# 这句话可以写成列表生成器的形式，这个列表还可以有其他的作用\n",
    "text_list = [ax.text(x, y, \"({0},{1})\".format(x, y), size=12) for x, y in X]\n",
    "print(text_list)\n",
    "# 把text_list放入函数adjust_text即可实现标签显示位置的美化\n",
    "adjust_text(text_list)\n",
    "####################################################################\n",
    "\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
